package pe.com.drokasa.android.client.service.impl;

import java.util.ArrayList;
import java.util.List;

import pe.com.drokasa.android.client.model.Producto;
import pe.com.drokasa.android.client.service.ProductService;
import pe.com.drokasa.android.client.service.helper.DatabaseHelper;
import android.content.Context;
import android.database.Cursor;

/**
 * Implementaci&oacute;n de operaciones que pueden realizar
 * en base de datos para la consulta de productos.
 * 
 * @author Synopsis S.A
 *
 */
public class ProductServiceImpl extends DatabaseHelper implements ProductService 
{	
	/**
	 * @param context
	 */
	public ProductServiceImpl(Context context)
	{
		super(context);
	}

	/**
	 * @see pe.com.drokasa.android.client.service.ProductService#obtenerProductosPorCodigo(java.lang.String)
	 */
	@Override
	public List<Producto> obtenerProductosPorCodigo(String codigo) 
	{
		String[] columns = new String[] { COLUMNA_CODIGO, COLUMNA_LINEA, COLUMNA_NOMBRE, COLUMNA_PRECIO };
		String[] params = new String[] { codigo };
		
		openDatabase();
		Cursor cursor = database.query(TABLA_PRODUCTO, columns, COLUMNA_CODIGO + "=?", params, null, null, null);
		
		List<Producto> productos = new ArrayList<Producto>();
		while(cursor.moveToNext())
		{
			Producto producto = new Producto();
			producto.setCodigo(cursor.getString(cursor.getColumnIndex(COLUMNA_CODIGO)));
			producto.setGrupo(cursor.getString(cursor.getColumnIndex(COLUMNA_LINEA)));
			producto.setNombre(cursor.getString(cursor.getColumnIndex(COLUMNA_NOMBRE)));
			producto.setPrecio(cursor.getString(cursor.getColumnIndex(COLUMNA_PRECIO)));
			productos.add(producto);
		}
		
		closeDatabase();
		
		return productos;
	}

	/**
	 * @see pe.com.drokasa.android.client.service.ProductService#obtenerProductosPorNombre(java.lang.String)
	 */
	@Override
	public List<Producto> obtenerProductosPorNombre(String nombre)
	{
		String[] columns = new String[] { COLUMNA_CODIGO, COLUMNA_LINEA, COLUMNA_NOMBRE, COLUMNA_PRECIO };
		String[] params = new String[] { "%" + nombre + "%" };
		
		openDatabase();
		Cursor cursor = database.query(TABLA_PRODUCTO, columns, COLUMNA_NOMBRE + " LIKE ?", params, null, null, null);
		
		List<Producto> productos = new ArrayList<Producto>();
		while(cursor.moveToNext())
		{
			Producto producto = new Producto();
			producto.setCodigo(cursor.getString(cursor.getColumnIndex(COLUMNA_CODIGO)));
			producto.setGrupo(cursor.getString(cursor.getColumnIndex(COLUMNA_LINEA)));
			producto.setNombre(cursor.getString(cursor.getColumnIndex(COLUMNA_NOMBRE)));
			producto.setPrecio(cursor.getString(cursor.getColumnIndex(COLUMNA_PRECIO)));
			productos.add(producto);
		}
		
		closeDatabase();
		
		return productos;
	}
}